import javax.swing.tree.TreeNode;

public class Test {

    /*
    * 盛水最多的容器
    * */

    public static void main(String[] args) {
        int[] hight = {1,8,6,2,5,4,8,3,7};
        System.out.println(maxArea(hight));
    }

    //方法一：直接暴力搜索(时间复杂度太高：O(N^2))
//    public static int maxArea1(int[] height) {
//        int curMax = 0;
//        for (int i = 0; i < height.length; i++) {
//            for (int j = i + 1; j < height.length; j++) {
//                int cur = 0;
//                if(height[i] < height[j]){
//                    cur = height[i] * (j - i);
//                }else{
//                    cur = height[j] * (j - i);
//                }
//                if(curMax < cur){
//                    curMax = cur;
//                }
//            }
//        }
//        return curMax;
//    }

    //方法二：利用单调性，使用双指针来解决问题
    public static int maxArea(int[] height) {
        int left = 0;
        int right = height.length - 1;
        int MaxV = 0;
        while(left < right){
            int cur = Math.min(height[left],height[right]) * (right - left);
            MaxV = Math.max(MaxV,cur);
            if(height[left] < height[right]){
                left++;
            }else{
                right--;
            }
        }
        return MaxV;
    }

}
